package com.ayz.gateway.core.session.http;

/**
 * @ClassName HttpStatement
 * @Description TODO: 一次HTTP请求都得开启一个会话进行处理
 *                    HttpStatement的核心功能就是存储HTTP请求需要传给会话层的参数
 *
 * @Author 快乐的星球
 * @Date 2023/5/8 11:19
 * @Version 1.0
 **/


import com.ayz.gateway.core.rpc.RemotingResponseCallback;
import lombok.Data;

import java.util.Map;

/**
 * 参数的封装
 */
@Data
public class HttpStatement {
    /**
     * 请求的资源路径
     */
    private String httpUri;
    /**
     * HTTP请求的方式
     */
    private HttpCommandType commandType;
    /**
     * Http请求中携带的参数
     * 先不考虑请求体中可能携带的参数
     */
    private Map<String, Object> requestPrams;
    /**
     * 数组类型的参数，最终调用RPC方法的时候传入的参数
     */
    private Object[] args;
    /**
     * 参数类型名称数组
     */
    private String[] parmaNames;
    /**
     * 响应回调处理函数
     */
    private RemotingResponseCallback responseCallback;

    public HttpStatement(String httpUri, HttpCommandType commandType) {
        this.httpUri = httpUri;
        this.commandType = commandType;
    }
}
